package com.millstein.tsinglog.service;

import com.millstein.tsinglog.model.dto.notice.NoticeSaveDTO;
import com.millstein.tsinglog.model.pojo.Notice;
import com.millstein.tsinglog.model.vo.result.PageResult;

import java.util.List;
import java.util.Map;

public interface NoticeService {

    /**
     * 分页并条件查询公告信息
     * @param currentPage
     * @param pageSize
     * @param keyword
     * @param type
     * @return
     */
    PageResult<Notice> getNoticeByPage(Integer currentPage, Integer pageSize, String keyword, Short type);

    /**
     * 获取所有启用的后台公告信息
     * @return
     */
    List<Notice> getAllBackUsableNotice();

    /**
     * 根据公告类型查询已启用的数量
     * @param type 公告类型
     * @return
     */
    int getNoticeCountByType(Short type);

    /**
     * 根据id修改指定公告是否可用
     * @param id 公告id
     * @param usable 是否可用，1可用，0不可用
     * @return
     */
    void changeUsable(Long id, Short usable);

    /**
     * 根据ids删除对应的公告信息
     * @param ids 要删除的公告对应的id的集合
     * @return
     */
    void deleteByIds(List<Long> ids);

    /**
     * 新增公告信息
     * @param noticeSaveDTO 新增的公告信息
     */
    void insertNotice(NoticeSaveDTO noticeSaveDTO);

    /**
     * 修改公告信息
     * @param noticeSaveDTO 修改的公告信息
     */
    void updateNotice(NoticeSaveDTO noticeSaveDTO);

    /**
     * 根据id查找对应的公告信息
     * @param id
     * @return
     */
    Notice getNoticeById(Long id);

    /**
     * 获取前台公告
     * @return
     */
    List<Map<String, Object>> getNoticeListForPortal();
}
